Add basic tests for bare-user-only repo modes
authorAlexander Larsson <alexl@redhat.com>
Sun, 26 Mar 2017 09:03:47 +0000 (11:03 +0200)
committerAtomic Bot <atomic-devel@projectatomic.io>
Mon, 27 Mar 2017 13:48:41 +0000 (13:48 +0000)
This is somewhat complicated by such repos only properly supporting
some subset of file metadata (uid/gid 0, etc). We fix this by
always commiting with filters that make it work.

Closes: #750
Approved by: cgwalters

Makefile-tests.am
tests/basic-test.sh
tests/libtest.sh
tests/test-basic-user-only.sh [new file with mode: 0755]

index fd755ee15aa75da9d967329af6254a9ac8f41d58..bba8f008b07c1603617dda1e56e23341abcbf9fb 100644 (file)
@@ -46,6 +46,7 @@ dist_uninstalled_test_scripts = tests/test-symbols.sh
 dist_test_scripts = \
        tests/test-basic.sh \
        tests/test-basic-user.sh \
+       tests/test-basic-user-only.sh \
        tests/test-pull-subpath.sh \
        tests/test-archivez.sh \
        tests/test-remote-add.sh \
index c1c6173bd0a850dc6a73bde873ab26e64b4e4b14..27b790266f624babcd519eb4aaee62514e1aa94a 100644 (file)
@@ -25,6 +25,19 @@ $CMD_PREFIX ostree --version > version.yaml
 python -c 'import yaml; yaml.safe_load(open("version.yaml"))'
 echo "ok yaml version"
 
+CHECKOUT_U_ARG=""
+COMMIT_ARGS=""
+DIFF_ARGS=""
+if grep bare-user-only repo/config; then
+    # In bare-user-only repos we can only represent files with uid/gid 0, no
+    # xattrs and canonical permissions, so we need to commit them as such, or
+    # we end up with repos that don't pass fsck
+    COMMIT_ARGS="--canonical-permissions"
+    DIFF_ARGS="--owner-uid=0 --owner-gid=0 --no-xattrs"
+    # Also, since we can't check out uid=0 files we need to check out in user mode
+    CHECKOUT_U_ARG="-U"
+fi
+
 $OSTREE checkout test2 checkout-test2
 echo "ok checkout"
 
@@ -59,7 +72,7 @@ assert_has_file baz/deeper/ohyeah
 echo "ok content"
 
 rm firstfile
-$OSTREE commit -b test2 -s delete
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s delete
 
 cd $test_tmpdir
 $OSTREE checkout test2 $test_tmpdir/checkout-test2-2
@@ -80,7 +93,7 @@ mkdir -p another/nested/tree
 echo anotherone > another/nested/tree/1
 echo whee2 > another/whee
 # FIXME - remove grep for .
-$OSTREE commit -b test2 -s "Another commit"
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "Another commit"
 echo "ok commit"
 
 cd ${test_tmpdir}
@@ -96,7 +109,7 @@ mkdir -p yet/another/tree
 echo leaf > yet/another/tree/green
 echo helloworld > yet/message
 rm a/5
-$OSTREE commit -b test2 -s "Current directory"
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "Current directory"
 echo "ok cwd commit"
 
 cd ${test_tmpdir}
@@ -107,15 +120,15 @@ assert_file_has_content four '4'
 echo "ok cwd contents"
 
 cd ${test_tmpdir}
-$OSTREE commit -b test2-no-parent -s '' $test_tmpdir/checkout-test2-4
+$OSTREE commit ${COMMIT_ARGS} -b test2-no-parent -s '' $test_tmpdir/checkout-test2-4
 assert_streq $($OSTREE log test2-no-parent |grep '^commit' | wc -l) "1"
-$OSTREE commit -b test2-no-parent -s '' --parent=none $test_tmpdir/checkout-test2-4
+$OSTREE commit ${COMMIT_ARGS} -b test2-no-parent -s '' --parent=none $test_tmpdir/checkout-test2-4
 assert_streq $($OSTREE log test2-no-parent |grep '^commit' | wc -l) "1"
 echo "ok commit no parent"
 
 cd ${test_tmpdir}
-empty_rev=$($OSTREE commit -b test2-no-subject -s '' --timestamp="2005-10-29 12:43:29 +0000" $test_tmpdir/checkout-test2-4)
-omitted_rev=$($OSTREE commit -b test2-no-subject-2 --timestamp="2005-10-29 12:43:29 +0000" $test_tmpdir/checkout-test2-4)
+empty_rev=$($OSTREE commit ${COMMIT_ARGS} -b test2-no-subject -s '' --timestamp="2005-10-29 12:43:29 +0000" $test_tmpdir/checkout-test2-4)
+omitted_rev=$($OSTREE commit ${COMMIT_ARGS} -b test2-no-subject-2 --timestamp="2005-10-29 12:43:29 +0000" $test_tmpdir/checkout-test2-4)
 assert_streq $empty_rev $omitted_rev
 echo "ok commit no subject"
 
@@ -127,7 +140,7 @@ commit message.
 Build-Host: foo.example.com
 Crunchy-With-Extra-Ketchup: true
 EOF
-$OSTREE commit -b branch-with-commitmsg -F commitmsg.txt -s 'a message' $test_tmpdir/checkout-test2-4
+$OSTREE commit ${COMMIT_ARGS} -b branch-with-commitmsg -F commitmsg.txt -s 'a message' $test_tmpdir/checkout-test2-4
 $OSTREE log branch-with-commitmsg > log.txt
 assert_file_has_content log.txt '^ *This is a long$'
 assert_file_has_content log.txt '^ *Build-Host:.*example.com$'
@@ -136,17 +149,17 @@ $OSTREE refs --delete branch-with-commitmsg
 echo "ok commit body file"
 
 cd ${test_tmpdir}
-$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
-$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
-$OSTREE commit -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
+$OSTREE commit ${COMMIT_ARGS} -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
+$OSTREE commit ${COMMIT_ARGS} -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
+$OSTREE commit ${COMMIT_ARGS} -b test2-custom-parent -s '' $test_tmpdir/checkout-test2-4
 assert_streq $($OSTREE log test2-custom-parent |grep '^commit' | wc -l) "3"
 prevparent=$($OSTREE rev-parse test2-custom-parent^)
-$OSTREE commit -b test2-custom-parent -s '' --parent=${prevparent} $test_tmpdir/checkout-test2-4
+$OSTREE commit ${COMMIT_ARGS} -b test2-custom-parent -s '' --parent=${prevparent} $test_tmpdir/checkout-test2-4
 assert_streq $($OSTREE log test2-custom-parent |grep '^commit' | wc -l) "3"
 echo "ok commit custom parent"
 
 cd ${test_tmpdir}
-orphaned_rev=$($OSTREE commit --orphan -s "$(date)" $test_tmpdir/checkout-test2-4)
+orphaned_rev=$($OSTREE commit ${COMMIT_ARGS} --orphan -s "$(date)" $test_tmpdir/checkout-test2-4)
 $OSTREE ls ${orphaned_rev} >/dev/null
 $OSTREE prune --refs-only
 if $OSTREE ls ${orphaned_rev} 2>err.txt; then
@@ -172,15 +185,15 @@ assert_file_has_content diff-test2-2 'A *oh-look-a-file$'
 echo "ok diff cwd"
 
 cd ${test_tmpdir}/checkout-test2-4
-$OSTREE diff test2 ./ > ${test_tmpdir}/diff-test2
+$OSTREE diff ${DIFF_ARGS} test2 ./ > ${test_tmpdir}/diff-test2
 assert_file_empty ${test_tmpdir}/diff-test2
-$OSTREE diff test2 --owner-uid=$((`id -u`+1)) ./ > ${test_tmpdir}/diff-test2
+$OSTREE diff ${DIFF_ARGS} test2 --owner-uid=$((`id -u`+1)) ./ > ${test_tmpdir}/diff-test2
 assert_file_has_content ${test_tmpdir}/diff-test2 'M */yet$'
 assert_file_has_content ${test_tmpdir}/diff-test2 'M */yet/message$'
 assert_file_has_content ${test_tmpdir}/diff-test2 'M */yet/another/tree/green$'
 echo "ok diff file with different uid"
 
-$OSTREE diff test2 --owner-gid=$((`id -g`+1)) ./ > ${test_tmpdir}/diff-test2
+$OSTREE diff ${DIFF_ARGS} test2 --owner-gid=$((`id -g`+1)) ./ > ${test_tmpdir}/diff-test2
 assert_file_has_content ${test_tmpdir}/diff-test2 'M */yet$'
 assert_file_has_content ${test_tmpdir}/diff-test2 'M */yet/message$'
 assert_file_has_content ${test_tmpdir}/diff-test2 'M */yet/another/tree/green$'
@@ -197,12 +210,12 @@ echo "ok diff file changing type"
 
 cd ${test_tmpdir}
 mkdir repo2
-ostree_repo_init repo2
+ostree_repo_init repo2 --mode=bare-user
 ${CMD_PREFIX} ostree --repo=repo2 pull-local repo
 echo "ok pull-local"
 
 cd ${test_tmpdir}
-${CMD_PREFIX} ostree --repo=repo2 checkout test2 test2-checkout-from-local-clone
+${CMD_PREFIX} ostree --repo=repo2 checkout ${CHECKOUT_U_ARG} test2 test2-checkout-from-local-clone
 cd test2-checkout-from-local-clone
 assert_file_has_content yet/another/tree/green 'leaf'
 echo "ok local clone checkout"
@@ -210,31 +223,33 @@ echo "ok local clone checkout"
 $OSTREE checkout -U test2 checkout-user-test2
 echo "ok user checkout"
 
-$OSTREE commit -b test2 -s "Another commit" --tree=ref=test2
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "Another commit" --tree=ref=test2
 echo "ok commit from ref"
 
-$OSTREE commit -b test2 -s "Another commit with modifier" --tree=ref=test2 --owner-uid=`id -u`
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "Another commit with modifier" --tree=ref=test2 --owner-uid=`id -u`
 echo "ok commit from ref with modifier"
 
-$OSTREE commit -b trees/test2 -s 'ref with / in it' --tree=ref=test2
+$OSTREE commit ${COMMIT_ARGS} -b trees/test2 -s 'ref with / in it' --tree=ref=test2
 echo "ok commit ref with /"
 
 old_rev=$($OSTREE rev-parse test2)
-$OSTREE commit --skip-if-unchanged -b test2 -s 'should not be committed' --tree=ref=test2
+$OSTREE ls -R -C test2
+$OSTREE commit ${COMMIT_ARGS} --skip-if-unchanged -b trees/test2 -s 'should not be committed' --tree=ref=test2
+$OSTREE ls -R -C test2
 new_rev=$($OSTREE rev-parse test2)
 assert_streq "${old_rev}" "${new_rev}"
 echo "ok commit --skip-if-unchanged"
 
 cd ${test_tmpdir}/checkout-test2-4
-$OSTREE commit -b test2 -s "no xattrs" --no-xattrs
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "no xattrs" --no-xattrs
 echo "ok commit with no xattrs"
 
 mkdir tree-A tree-B
 touch tree-A/file-a tree-B/file-b
 
-$OSTREE commit -b test3-1 -s "Initial tree" --tree=dir=tree-A
-$OSTREE commit -b test3-2 -s "Replacement tree" --tree=dir=tree-B
-$OSTREE commit -b test3-combined -s "combined tree" --tree=ref=test3-1 --tree=ref=test3-2
+$OSTREE commit ${COMMIT_ARGS} -b test3-1 -s "Initial tree" --tree=dir=tree-A
+$OSTREE commit ${COMMIT_ARGS} -b test3-2 -s "Replacement tree" --tree=dir=tree-B
+$OSTREE commit ${COMMIT_ARGS} -b test3-combined -s "combined tree" --tree=ref=test3-1 --tree=ref=test3-2
 
 $OSTREE checkout test3-combined checkout-test3-combined
 
@@ -250,7 +265,7 @@ cat > test-statoverride.txt <<EOF
 2048 /a/nested/3
 EOF
 cd ${test_tmpdir}/checkout-test2-4
-$OSTREE commit -b test2-override -s "with statoverride" --statoverride=../test-statoverride.txt
+$OSTREE commit ${COMMIT_ARGS} -b test2-override -s "with statoverride" --statoverride=../test-statoverride.txt
 cd ${test_tmpdir}
 $OSTREE checkout test2-override checkout-test2-override
 test -g checkout-test2-override/a/nested/2
@@ -263,7 +278,7 @@ cat > test-skiplist.txt <<EOF
 EOF
 cd ${test_tmpdir}/checkout-test2-4
 assert_has_file a/nested/3
-$OSTREE commit -b test2-skiplist -s "with skiplist" --skip-list=../test-skiplist.txt
+$OSTREE commit ${COMMIT_ARGS} -b test2-skiplist -s "with skiplist" --skip-list=../test-skiplist.txt
 cd ${test_tmpdir}
 $OSTREE checkout test2-skiplist checkout-test2-skiplist
 assert_not_has_file checkout-test2-skiplist/a/nested/3
@@ -285,9 +300,9 @@ assert_file_has_content tree/green "leaf"
 echo "ok checkout subpath"
 
 cd ${test_tmpdir}
-$OSTREE checkout --union test2 checkout-test2-union
+$OSTREE checkout  --union test2 checkout-test2-union
 find checkout-test2-union | wc -l > union-files-count
-$OSTREE checkout --union test2 checkout-test2-union
+$OSTREE checkout  --union test2 checkout-test2-union
 find checkout-test2-union | wc -l > union-files-count.new
 cmp union-files-count{,.new}
 cd checkout-test2-union
@@ -295,11 +310,11 @@ assert_file_has_content ./yet/another/tree/green "leaf"
 echo "ok checkout union 1"
 
 cd ${test_tmpdir}
-$OSTREE commit -b test-union-add --tree=ref=test2
+$OSTREE commit ${COMMIT_ARGS} -b test-union-add --tree=ref=test2
 $OSTREE checkout test-union-add checkout-test-union-add
 echo 'file for union add testing' > checkout-test-union-add/union-add-test
 echo 'another file for union add testing' > checkout-test-union-add/union-add-test2
-$OSTREE commit -b test-union-add --tree=dir=checkout-test-union-add
+$OSTREE commit ${COMMIT_ARGS} -b test-union-add --tree=dir=checkout-test-union-add
 rm checkout-test-union-add -rf
 # Check out previous
 $OSTREE checkout test-union-add^ checkout-test-union-add
@@ -319,7 +334,7 @@ ostree_repo_init shadow-repo
 ${CMD_PREFIX} ostree --repo=shadow-repo config set core.parent $(pwd)/repo
 rm -rf test2-checkout
 parent_rev_test2=$(${CMD_PREFIX} ostree --repo=repo rev-parse test2)
-${CMD_PREFIX} ostree --repo=shadow-repo checkout "${parent_rev_test2}" test2-checkout
+${CMD_PREFIX} ostree --repo=shadow-repo checkout ${CHECKOUT_U_ARG} "${parent_rev_test2}" test2-checkout
 echo "ok checkout from shadow repo"
 
 cd ${test_tmpdir}
@@ -335,7 +350,7 @@ echo "ok subdir noent"
 
 cd ${test_tmpdir}
 mkdir repo3
-ostree_repo_init repo3
+ostree_repo_init repo3 --mode=bare-user
 ${CMD_PREFIX} ostree --repo=repo3 pull-local --remote=aremote repo test2
 ${CMD_PREFIX} ostree --repo=repo3 rev-parse aremote/test2
 echo "ok pull-local with --remote arg"
@@ -368,7 +383,7 @@ echo "ok prune in archive-z2 deleted everything"
 cd ${test_tmpdir}
 rm -rf test2-checkout
 $OSTREE checkout test2 test2-checkout
-(cd test2-checkout && $OSTREE commit --link-checkout-speedup -b test2 -s "tmp")
+(cd test2-checkout && $OSTREE commit ${COMMIT_ARGS} --link-checkout-speedup -b test2 -s "tmp")
 echo "ok commit with link speedup"
 
 cd ${test_tmpdir}
@@ -387,7 +402,7 @@ $OSTREE show test2
 echo "ok show with non-checksum"
 
 cd $test_tmpdir/checkout-test2
-checksum=$($OSTREE commit -b test4 -s "Third commit")
+checksum=$($OSTREE commit ${COMMIT_ARGS} -b test4 -s "Third commit")
 cd ${test_tmpdir}
 $OSTREE show test4 > show-output
 assert_file_has_content show-output "Third commit"
@@ -395,8 +410,8 @@ assert_file_has_content show-output "commit $checksum"
 echo "ok show full output"
 
 cd $test_tmpdir/checkout-test2
-checksum1=$($OSTREE commit -b test5 -s "First commit")
-checksum2=$($OSTREE commit -b test5 -s "Second commit")
+checksum1=$($OSTREE commit ${COMMIT_ARGS} -b test5 -s "First commit")
+checksum2=$($OSTREE commit ${COMMIT_ARGS} -b test5 -s "Second commit")
 cd ${test_tmpdir}
 $OSTREE log test5 > log-output
 assert_file_has_content log-output "First commit"
@@ -406,8 +421,8 @@ assert_file_has_content log-output "commit $checksum2"
 echo "ok log output"
 
 cd $test_tmpdir/checkout-test2
-checksum1=$($OSTREE commit -b test6 -s "First commit")
-checksum2=$($OSTREE commit -b test6 -s "Second commit")
+checksum1=$($OSTREE commit ${COMMIT_ARGS} -b test6 -s "First commit")
+checksum2=$($OSTREE commit ${COMMIT_ARGS} -b test6 -s "Second commit")
 cd ${test_tmpdir}
 $OSTREE show test6 > show-output
 assert_file_has_content show-output "commit $checksum2"
@@ -420,11 +435,11 @@ cd ${test_tmpdir}
 rm checkout-test2 -rf
 $OSTREE checkout test2 checkout-test2
 touch checkout-test2/sometestfile
-$OSTREE commit -s sometest -b test2 checkout-test2
+$OSTREE commit ${COMMIT_ARGS} -s sometest -b test2 checkout-test2
 echo "ok commit with directory filename"
 
 cd $test_tmpdir/checkout-test2
-$OSTREE commit -b test2 -s "Metadata string" --add-metadata-string=FOO=BAR --add-metadata-string=KITTENS=CUTE --add-detached-metadata-string=SIGNATURE=HANCOCK --tree=ref=test2
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "Metadata string" --add-metadata-string=FOO=BAR --add-metadata-string=KITTENS=CUTE --add-detached-metadata-string=SIGNATURE=HANCOCK --tree=ref=test2
 cd ${test_tmpdir}
 $OSTREE show --print-metadata-key=FOO test2 > test2-meta
 assert_file_has_content test2-meta "BAR"
@@ -437,7 +452,7 @@ echo "ok metadata commit with strings"
 cd ${test_tmpdir}
 rm repo2 -rf
 mkdir repo2
-ostree_repo_init repo2
+ostree_repo_init repo2 --mode=bare-user
 ${CMD_PREFIX} ostree --repo=repo2 pull-local repo
 ${CMD_PREFIX} ostree --repo=repo2 show --print-detached-metadata-key=SIGNATURE test2 > test2-meta
 assert_file_has_content test2-meta "HANCOCK"
@@ -472,7 +487,7 @@ rm -rf test2-checkout
 mkdir -p test2-checkout
 cd test2-checkout
 mkfifo afifo
-if $OSTREE commit -b test2 -s "Attempt to commit a FIFO" 2>../errmsg; then
+if $OSTREE commit ${COMMIT_ARGS} -b test2 -s "Attempt to commit a FIFO" 2>../errmsg; then
     assert_not_reached "Committing a FIFO unexpetedly succeeded!"
     assert_file_has_content ../errmsg "Unsupported file type"
 fi
@@ -504,7 +519,7 @@ date > checkout-test2/date.txt
 rm repo/tmp/* -rf
 export TEST_BOOTID=3072029c-8b10-60d1-d31b-8422eeff9b42
 if env OSTREE_REPO_TEST_ERROR=pre-commit OSTREE_BOOTID=${TEST_BOOTID} \
-       $OSTREE commit -b test2 -s '' $test_tmpdir/checkout-test2 2>err.txt; then
+       $OSTREE commit ${COMMIT_ARGS} -b test2 -s '' $test_tmpdir/checkout-test2 2>err.txt; then
     assert_not_reached "Should have hit OSTREE_REPO_TEST_ERROR_PRE_COMMIT"
 fi
 assert_file_has_content err.txt OSTREE_REPO_TEST_ERROR_PRE_COMMIT
@@ -526,7 +541,7 @@ if touch overlay/baz/.wh.cow && touch overlay/.wh.deeper; then
     touch overlay/anewfile
     mkdir overlay/anewdir/
     touch overlay/anewdir/blah
-    $OSTREE --repo=repo commit -b overlay -s 'overlay' --tree=dir=overlay
+    $OSTREE --repo=repo commit ${COMMIT_ARGS} -b overlay -s 'overlay' --tree=dir=overlay
     rm overlay -rf
 
     for branch in test2 overlay; do
@@ -563,7 +578,7 @@ rm -rf test2-checkout
 mkdir -p test2-checkout
 cd test2-checkout
 touch should-not-be-fsynced
-$OSTREE commit -b test2 -s "Unfsynced commit" --fsync=false
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "Unfsynced commit" --fsync=false
 
 # Run this test only as non-root user.  When run as root, the chmod
 # won't have any effect.
@@ -587,7 +602,7 @@ mkdir -p test2-checkout
 cd test2-checkout
 touch blah
 stat --printf="%.Y\n" ${test_tmpdir}/repo > ${test_tmpdir}/timestamp-orig.txt
-$OSTREE commit -b test2 -s "Should bump the mtime"
+$OSTREE commit ${COMMIT_ARGS} -b test2 -s "Should bump the mtime"
 stat --printf="%.Y\n" ${test_tmpdir}/repo > ${test_tmpdir}/timestamp-new.txt
 cd ..
 if cmp timestamp-{orig,new}.txt; then
index 363413fd6dd22c50b5b19dd9035498eb2b6837e5..58351f811698035cf4e122aa065a37ad53918110 100755 (executable)
@@ -206,6 +206,11 @@ setup_test_repository () {
 
     oldpwd=`pwd`
 
+    COMMIT_ARGS=""
+    if [ $mode == "bare-user-only" ] ; then
+       COMMIT_ARGS="--owner-uid=0 --owner-gid=0 --no-xattrs --canonical-permissions"
+    fi
+
     cd ${test_tmpdir}
     if test -n "${mode}"; then
         ostree_repo_init repo --mode=${mode}
@@ -224,7 +229,7 @@ setup_test_repository () {
     echo first > firstfile
 
     cd ${test_tmpdir}/files
-    $OSTREE commit -b test2 -s "Test Commit 1" -m "Commit body first"
+    $OSTREE commit ${COMMIT_ARGS}  -b test2 -s "Test Commit 1" -m "Commit body first"
 
     mkdir baz
     echo moo > baz/cow
@@ -236,7 +241,7 @@ setup_test_repository () {
     echo x > baz/another/y
 
     cd ${test_tmpdir}/files
-    $OSTREE commit -b test2 -s "Test Commit 2" -m "Commit body second"
+    $OSTREE commit ${COMMIT_ARGS}  -b test2 -s "Test Commit 2" -m "Commit body second"
     $OSTREE fsck -q
 
     cd $oldpwd
diff --git a/tests/test-basic-user-only.sh b/tests/test-basic-user-only.sh
new file mode 100755 (executable)
index 0000000..a3e63aa
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Copyright (C) 2011 Colin Walters <walters@verbum.org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+set -euo pipefail
+
+. $(dirname $0)/libtest.sh
+
+setup_test_repository "bare-user-only"
+. $(dirname $0)/basic-test.sh